home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / text / AbstractDocument$BranchElement.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  2.9 KB  |  155 lines

  1. package javax.swing.text;
  2.  
  3. import java.util.Enumeration;
  4. import java.util.Vector;
  5.  
  6. public class AbstractDocument$BranchElement extends AbstractDocument.AbstractElement {
  7.    // $FF: synthetic field
  8.    private final AbstractDocument this$0;
  9.    private AbstractDocument.AbstractElement[] children;
  10.    private int nchildren;
  11.    private int lastIndex;
  12.  
  13.    public AbstractDocument$BranchElement(AbstractDocument var1, Element var2, AttributeSet var3) {
  14.       super(var1, var2, var3);
  15.       this.this$0 = var1;
  16.       this.children = new AbstractDocument.AbstractElement[1];
  17.       this.nchildren = 0;
  18.       this.lastIndex = -1;
  19.    }
  20.  
  21.    public Enumeration children() {
  22.       if (this.nchildren == 0) {
  23.          return null;
  24.       } else {
  25.          Vector var1 = new Vector(this.nchildren);
  26.  
  27.          for(int var2 = 0; var2 < this.nchildren; ++var2) {
  28.             var1.addElement(this.children[var2]);
  29.          }
  30.  
  31.          return var1.elements();
  32.       }
  33.    }
  34.  
  35.    public boolean getAllowsChildren() {
  36.       return true;
  37.    }
  38.  
  39.    public Element getElement(int var1) {
  40.       return var1 < this.nchildren ? this.children[var1] : null;
  41.    }
  42.  
  43.    public int getElementCount() {
  44.       return this.nchildren;
  45.    }
  46.  
  47.    public int getElementIndex(int var1) {
  48.       int var3 = 0;
  49.       int var4 = this.nchildren - 1;
  50.       int var5 = 0;
  51.       int var6 = this.getStartOffset();
  52.       if (this.nchildren == 0) {
  53.          return 0;
  54.       } else if (var1 >= this.getEndOffset()) {
  55.          return this.nchildren - 1;
  56.       } else {
  57.          if (this.lastIndex >= var3 && this.lastIndex <= var4) {
  58.             AbstractDocument.AbstractElement var8 = this.children[this.lastIndex];
  59.             var6 = var8.getStartOffset();
  60.             int var7 = var8.getEndOffset();
  61.             if (var1 >= var6 && var1 < var7) {
  62.                return this.lastIndex;
  63.             }
  64.  
  65.             if (var1 < var6) {
  66.                var4 = this.lastIndex;
  67.             } else {
  68.                var3 = this.lastIndex;
  69.             }
  70.          }
  71.  
  72.          while(var3 <= var4) {
  73.             var5 = var3 + (var4 - var3) / 2;
  74.             AbstractDocument.AbstractElement var10 = this.children[var5];
  75.             var6 = var10.getStartOffset();
  76.             int var9 = var10.getEndOffset();
  77.             if (var1 >= var6 && var1 < var9) {
  78.                this.lastIndex = var5;
  79.                return var5;
  80.             }
  81.  
  82.             if (var1 < var6) {
  83.                var4 = var5 - 1;
  84.             } else {
  85.                var3 = var5 + 1;
  86.             }
  87.          }
  88.  
  89.          int var2;
  90.          if (var1 < var6) {
  91.             var2 = var5;
  92.          } else {
  93.             var2 = var5 + 1;
  94.          }
  95.  
  96.          this.lastIndex = var2;
  97.          return var2;
  98.       }
  99.    }
  100.  
  101.    public int getEndOffset() {
  102.       AbstractDocument.AbstractElement var1 = this.children[this.nchildren - 1];
  103.       return var1.getEndOffset();
  104.    }
  105.  
  106.    public String getName() {
  107.       String var1 = super.getName();
  108.       if (var1 == null) {
  109.          var1 = "paragraph";
  110.       }
  111.  
  112.       return var1;
  113.    }
  114.  
  115.    public int getStartOffset() {
  116.       return this.children[0].getStartOffset();
  117.    }
  118.  
  119.    public boolean isLeaf() {
  120.       return false;
  121.    }
  122.  
  123.    public Element positionToElement(int var1) {
  124.       int var2 = this.getElementIndex(var1);
  125.       AbstractDocument.AbstractElement var3 = this.children[var2];
  126.       int var4 = var3.getStartOffset();
  127.       int var5 = var3.getEndOffset();
  128.       return var1 >= var4 && var1 < var5 ? var3 : null;
  129.    }
  130.  
  131.    public void replace(int var1, int var2, Element[] var3) {
  132.       int var4 = var3.length - var2;
  133.       int var5 = var1 + var2;
  134.       int var6 = this.nchildren - var5;
  135.       int var7 = var5 + var4;
  136.       if (this.nchildren + var4 >= this.children.length) {
  137.          int var8 = Math.max(2 * this.children.length, this.nchildren + var4);
  138.          AbstractDocument.AbstractElement[] var9 = new AbstractDocument.AbstractElement[var8];
  139.          System.arraycopy(this.children, 0, var9, 0, var1);
  140.          System.arraycopy(var3, 0, var9, var1, var3.length);
  141.          System.arraycopy(this.children, var5, var9, var7, var6);
  142.          this.children = var9;
  143.       } else {
  144.          System.arraycopy(this.children, var5, this.children, var7, var6);
  145.          System.arraycopy(var3, 0, this.children, var1, var3.length);
  146.       }
  147.  
  148.       this.nchildren += var4;
  149.    }
  150.  
  151.    public String toString() {
  152.       return "BranchElement(" + this.getName() + ") " + this.getStartOffset() + "," + this.getEndOffset() + "\n";
  153.    }
  154. }
  155.